In the context of computer architectures, a cache is a high-speed memory device providing an intermediate level of memory between a processor and main memory. The cache can accelerate processing by storing recently used data or instructions, thereby reducing accesses to main memory that often require significant access times. The cache may be located within the processor or may be external, possibly incorporated into a memory controller.
The operation of a cache is typically transparent to software applications executed by the processor. A cache controller typically manages the cache. The cache controller, for example, updates the cache when a “cache miss” occurs, i.e., when the processor requests data that is not currently stored within the cache. Cache misses, however, can introduce significant processing overhead that impede processor performance. For this reason, it is highly desirable to improve cache management so as to avoid cache misses, and to ensure that the data needed by the processor during processing is available in the cache.